package com.jack.vipmis.vip.sign;

/**
 * 移位和积分规则类
 * 
 * @author JackLiang
 * @date 2014-6-22
 * @version 1.0
 */
public class ScoreRuleAndMoveByte {
	public static Long moveByte(long oldHistory, long moveAmonut) {
		long moveResult = oldHistory << moveAmonut;
		long result = Long.parseLong(toFullBinaryString(moveResult), 2) + 1;
		return result;
	}

	/**
	 * 读取
	 * 
	 * @param num
	 * @return
	 */
	private static String toFullBinaryString(long num) {
		final int size = 42;
		char[] chs = new char[size];
		for (int i = 0; i < size; i++) {
			chs[size - 1 - i] = (char) (((num >> i) & 1) + '0');
		}
		return new String(chs);
	}

	/**
	 * 按照积分规则，得到积分 , 积分规则如下： 签到功能说明 1.每天只能签到一次（按服务器系统时间为准） 2.连续签到
	 * 额外奖励积分，同种礼包只能使用一次 3.连续签到10天，一次性奖励2积分 4.连续签到30天，一次性奖励10积分
	 * 5.连续签到60天，一次性奖励30积分 6.连续签到90天，一次性奖励100积分
	 * 
	 * @param signCount
	 *            连续签到次数
	 * @return 增加的积分
	 */
	public static Long getScoreByRule(Long signCount) {
		Long addScore = 1L;

		if (signCount == 10) {
			addScore += 2;
		} else if (signCount == 30) {
			addScore += 10;
		} else if (signCount == 60) {
			addScore += 30;
		} else if (signCount == 90) {
			addScore += 100;
		}

		return addScore;
	}

}
